home *** CD-ROM | disk | FTP | other *** search
/ Night Owl 6 / Night Owl's Shareware - PDSI-006 - Night Owl Corp (1990).iso / 002a / vaxgames.zip / TTT.COM < prev    next >
Text File  |  1989-04-21  |  6KB  |  292 lines

  1. $! TTT_DCL -- See info at end of file.
  2. $ GOT END
  3. $B:
  4. $ T := WR SYS$OUTPUT
  5. $ O  = "O"
  6. $ O1 = ".OO"
  7. $ O2 = "O.O"
  8. $ O3 = "OO."
  9. $ P  = "."
  10. $ Q1 = "Your play..."
  11. $ Q2 = "> "
  12. $ Q3 = "N"
  13. $ Q4 = "Q"
  14. $ Q5 = "Congratulations! You win!"
  15. $ Q6 = "Play again? "
  16. $ Q7 = "Sorry, I win."
  17. $ Q8 = "Tie game."
  18. $ Q9 = "Illegal move. Try again."
  19. $ Q0 = "Thanks for playing."
  20. $ QA = "Beginning new game..."
  21. $ S  = " "
  22. $ WP = "XXX"
  23. $ X  = "X"
  24. $ X1 = ".XX"
  25. $ X2 = "X.X"
  26. $ X3 = "XX."
  27. $ Z  = ""
  28. $ GOS V
  29. $! Initialization
  30. $IN:
  31. $ P1 = P
  32. $ P2 = P
  33. $ P3 = P
  34. $ P4 = P
  35. $ P5 = P
  36. $ P6 = P
  37. $ P7 = P
  38. $ P8 = P
  39. $ P9 = P
  40. $ T QA
  41. $!
  42. $!
  43. $N:
  44. $ T Q1
  45. $ INQ/NOP M "''Q2'"
  46. $ IF M .EQS. Z .OR. -
  47.   F$LE(M) .GT. 1 THEN GOT E
  48. $ IF M .EQS. Q3 THEN GOT IN
  49. $ IF M .EQS. Q4 THEN GOT Q
  50. $ IF F$IN(M) .EQ. 0 THEN GOT E
  51. $ IF P'M' .NES. P THEN GOT E
  52. $ P'M' = X
  53. $ GOS BB
  54. $ IF F$LOC(P,BD) .EQ. 9 -
  55.   THEN GOT TIE
  56. $ GOS DB
  57. $ GOS CW
  58. $ IF W THEN GOT HW
  59. $! Grab center square, if available.
  60. $ IF P5 .NES. P THEN GOT W
  61. $ P5 = O
  62. $ GOS BB
  63. $ GOS DB
  64. $ GOT N
  65. $W:
  66. $ GOS DW
  67. $ GOS WB
  68. $ IF MV THEN GOT N
  69. $ GOS GC
  70. $ GOS BB
  71. $ GOS DB
  72. $ GOT N
  73. $!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  74. $!     SUBROUTINES           !
  75. $!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  76. $BB:
  77. $ BD = P1+P2+P3+P4+P5+P6+P7+P8+P9
  78. $ RET
  79. $!
  80. $! Display the board:
  81. $DB:
  82. $ T Z
  83. $ T S+P1+S+P2+S+P3
  84. $ T S+P4+S+P5+S+P6
  85. $ T S+P7+S+P8+S+P9
  86. $ T Z
  87. $ RET
  88. $!
  89. $! Is move a winner?
  90. $CW:
  91. $ W = 0
  92. $! Check horizontally:
  93. $ IF P1+P2+P3 .EQS. WP THEN W=1
  94. $ IF P4+P5+P6 .EQS. WP THEN W=1
  95. $ IF P7+P8+P9 .EQS. WP THEN W=1
  96. $ IF W THEN RET
  97. $! Check vertically:
  98. $ IF P1+P4+P7 .EQS. WP THEN W=1
  99. $ IF P2+P5+P8 .EQS. WP THEN W=1
  100. $ IF P3+P6+P9 .EQS. WP THEN W=1
  101. $ IF W THEN RET
  102. $! Check diagonally:
  103. $ IF P1+P5+P9 .EQS. WP THEN W=1
  104. $ IF P3+P5+P7 .EQS. WP THEN W=1
  105. $ RET
  106. $!
  107. $WB:
  108. $ MV = 0
  109. $ OB = BD
  110. $ R = P1+P2+P3
  111. $ IF R .EQS. X1 THEN P1 = O
  112. $ IF R .EQS. X2 THEN P2 = O
  113. $ IF R .EQS. X3 THEN P3 = O
  114. $ IF R .NES. P1+P2+P3 THEN GOT BN
  115. $ R = P4+P5+P6
  116. $ IF R .EQS. X1 THEN P4 = O
  117. $ IF R .EQS. X2 THEN P5 = O
  118. $ IF R .EQS. X3 THEN P6 = O
  119. $ IF R .NES. P4+P5+P6 THEN GOT BN
  120. $ R = P7+P8+P9
  121. $ IF R .EQS. X1 THEN P7 = O
  122. $ IF R .EQS. X2 THEN P8 = O
  123. $ IF R .EQS. X3 THEN P9 = O
  124. $ IF R .NES. P7+P8+P9 THEN GOT BN
  125. $ R = P1+P4+P7
  126. $ IF R .EQS. X1 THEN P1 = O
  127. $ IF R .EQS. X2 THEN P4 = O
  128. $ IF R .EQS. X3 THEN P7 = O
  129. $ IF R .NES. P1+P4+P7 THEN GOT BN
  130. $ R = P2+P5+P8
  131. $ IF R .EQS. X1 THEN P2 = O
  132. $ IF R .EQS. X2 THEN P5 = O
  133. $ IF R .EQS. X3 THEN P8 = O
  134. $ IF R .NES. P2+P5+P8 THEN GOT BN
  135. $ R = P3+P6+P9
  136. $ IF R .EQS. X1 THEN P3 = O
  137. $ IF R .EQS. X2 THEN P6 = O
  138. $ IF R .EQS. X3 THEN P9 = O
  139. $ IF R .NES. P3+P6+P9 THEN GOT BN
  140. $ R = P1+P5+P9
  141. $ IF R .EQS. X1 THEN P1 = O
  142. $ IF R .EQS. X2 THEN P5 = O
  143. $ IF R .EQS. X3 THEN P9 = O
  144. $ IF R .NES. P1+P5+P9 THEN GOT BN
  145. $ R = P3+P5+P7
  146. $ IF R .EQS. X1 THEN P3 = O
  147. $ IF R .EQS. X2 THEN P5 = O
  148. $ IF R .EQS. X3 THEN P7 = O
  149. $ IF R .NES. P3+P5+P7 THEN GOT BN
  150. $ RET
  151. $BN:
  152. $ MV = 1
  153. $ GOS BB
  154. $ GOS DB
  155. $ RET
  156. $!
  157. $ DW:
  158. $ MV = 0
  159. $ OB = BD
  160. $ R = P1+P2+P3
  161. $ IF R .EQS. O1 THEN P1 = O
  162. $ IF R .EQS. O2 THEN P2 = O
  163. $ IF R .EQS. O3 THEN P3 = O
  164. $ IF R .NES. P1+P2+P3 THEN GOT WD
  165. $ R = P4+P5+P6
  166. $ IF R .EQS. O1 THEN P4 = O
  167. $ IF R .EQS. O2 THEN P5 = O
  168. $ IF R .EQS. O3 THEN P6 = O
  169. $ IF R .NES. P4+P5+P6 THEN GOT WD
  170. $ R = P7+P8+P9
  171. $ IF R .EQS. O1 THEN P7 = O
  172. $ IF R .EQS. O2 THEN P8 = O
  173. $ IF R .EQS. O3 THEN P9 = O
  174. $ IF R .NES. P7+P8+P9 THEN GOT WD
  175. $ R = P1+P4+P7
  176. $ IF R .EQS. O1 THEN P1 = O
  177. $ IF R .EQS. O2 THEN P4 = O
  178. $ IF R .EQS. O3 THEN P7 = O
  179. $ IF R .NES. P1+P4+P7 THEN GOT WD
  180. $ R = P2+P5+P8
  181. $ IF R .EQS. O1 THEN P2 = O
  182. $ IF R .EQS. O2 THEN P5 = O
  183. $ IF R .EQS. O3 THEN P8 = O
  184. $ IF R .NES. P2+P5+P8 THEN GOT WD
  185. $ R = P3+P6+P9
  186. $ IF R .EQS. O1 THEN P3 = O
  187. $ IF R .EQS. O2 THEN P6 = O
  188. $ IF R .EQS. O3 THEN P9 = O
  189. $ IF R .NES. P3+P6+P9 THEN GOT WD
  190. $ R = P1+P5+P9
  191. $ IF R .EQS. O1 THEN P1 = O
  192. $ IF R .EQS. O2 THEN P5 = O
  193. $ IF R .EQS. O3 THEN P9 = O
  194. $ IF R .NES. P1+P5+P9 THEN GOT WD
  195. $ R = P3+P5+P7
  196. $ IF R .EQS. O1 THEN P3 = O
  197. $ IF R .EQS. O2 THEN P5 = O
  198. $ IF R .EQS. O3 THEN P7 = O
  199. $ IF R .NES. P3+P5+P7 THEN GOT WD
  200. $ RET
  201. $WD:
  202. $ MV = 1
  203. $ GOS BB
  204. $ GOS DB
  205. $ GOT WC
  206. $!
  207. $GC:
  208. $ IF P1 .NES. P THEN GOT G3
  209. $ P1 = O
  210. $ RET
  211. $G3:
  212. $ IF P3 .NES. P THEN GOT G7
  213. $ P3 = O
  214. $ RET
  215. $G7:
  216. $ IF P7 .NES. P THEN GOT G9
  217. $ P7 = O
  218. $ RET
  219. $G9:
  220. $ IF P9 .NES. P THEN RET
  221. $ P9 = O
  222. $ RET
  223. $!
  224. $ V:
  225. $ TY SYS$INPUT:
  226. This command procedure plays Tic-Tac-Toe.
  227. Your mark is X and you will play first.
  228. The board is numbered as follows:
  229.    1 2 3
  230.    4 5 6
  231.    7 8 9
  232. When it is your turn to play, enter the
  233. number of the square you wish to mark.
  234. For example, if you type "5", the
  235. result is:
  236.    . . .
  237.    . X .
  238.    . . .
  239. You may start a new game by typing N
  240. or quit by typing Q.
  241. $ RET
  242. $HW:
  243. $ GOS DB
  244. $ T Q5
  245. $ INQ/NOP A "''Q6"
  246. $ IF A THEN GOT IN
  247. $ GOT Q
  248. $!
  249. $WC:
  250. $ T Q7
  251. $ INQ/NOP A "''Q6'"
  252. $ IF A THEN GOT IN
  253. $ GOT Q
  254. $!
  255. $TIE:
  256. $ GOS DB
  257. $ T Q8
  258. $ INQ/NOP A "''Q6'"
  259. $ IF A THEN GOT IN
  260. $ GOT Q
  261. $!
  262. $E:
  263. $ T Q9
  264. $ GOT N
  265. $!
  266. $Q:
  267. $ T Q0
  268. $ EXI
  269. $END:
  270. $ GOT B
  271. $! TTT_DCL
  272. $! DCL version of Tic-Tac-Toe
  273. $! Loosely based on algorithms contained
  274. $! in the book "String and List
  275. $! Processing in SNOBOL" by
  276. $! Ralph E. Griswold and the SNOBOL4+ code
  277. $! developed and copyrighted by Mark Emmer
  278. $! of Catspaw, Inc.
  279. $!
  280. $! Copyright (C) 1989 by
  281. $! Kevin G. Barkes Consulting Services
  282. $! 4107 Overlook Street
  283. $! Library, PA 15129
  284. $! 412-854-2550 (Voice)
  285. $! 412-854-0511 (SYS$OUTPUT BBS)
  286. $! 412-854-4707 (Facsimile)
  287. $! All rights reserved.  No restriction on
  288. $! non-commercial distribution. This
  289. $! software is guaranteed to suck up cpu
  290. $! time.  No other warranties are made or
  291. $! implied.
  292.